#!/bin/bash

# Test script for ddl_checker with database integration testing
# This script demonstrates how to use TEST_DB_SWITCH environment variable

echo "=== DDL Checker 测试脚本 ==="
echo

# 显示当前环境变量状态
echo "当前 TEST_DB_SWITCH 设置: ${TEST_DB_SWITCH:-未设置}"
echo

# 1. 运行基本单元测试（不连接数据库）
echo "1. 运行基本单元测试（不连接数据库）..."
echo "命令: go test ./internal/service/ -v"
go test ./internal/service/ -v
echo

# 2. 运行特定服务测试
echo "2. 运行 SchemaService 测试..."
echo "命令: go test ./internal/service/ -v -run TestSchemaService"
go test ./internal/service/ -v -run TestSchemaService
echo

# 3. 显示如何启用数据库集成测试
echo "3. 数据库集成测试说明："
echo "要启用数据库集成测试，请设置环境变量："
echo "   export TEST_DB_SWITCH=true"
echo "   # 或者编辑 .env 文件，填入真实的数据库连接信息"
echo

# 4. 检查是否可以进行数据库集成测试
if [ -f ".env" ]; then
    echo "4. 检查 .env 文件..."
    if grep -q "DB_HOST=" .env && grep -q "DB_USER=" .env && grep -q "DB_PASSWORD=" .env; then
        echo "✓ .env 文件存在且包含必要的数据库配置"

        # 询问用户是否要运行数据库集成测试
        read -p "是否要运行数据库集成测试？(y/N): " -n 1 -r
        echo
        if [[ $REPLY =~ ^[Yy]$ ]]; then
            echo "运行数据库集成测试..."
            # 切换到项目根目录并运行测试
            cd "$(dirname "$0")/.."
            TEST_DB_SWITCH=true go test ./internal/service/ -v -run TestSchemaService_Integration
        else
            echo "跳过数据库集成测试"
        fi
    else
        echo "⚠ .env 文件存在但缺少必要的数据库配置"
        echo "请确保 .env 文件包含以下配置："
        echo "   DB_HOST=数据库主机地址"
        echo "   DB_USER=数据库用户名"
        echo "   DB_PASSWORD=数据库密码"
        echo "   DB_NAME=数据库名称"
    fi
else
    echo "⚠ 未找到 .env 文件"
    echo "要运行数据库集成测试，请："
    echo "   1. 编辑 .env 文件，填入真实的数据库连接信息"
    echo "   2. 运行: TEST_DB_SWITCH=true go test ./internal/service/ -v -run TestSchemaService_Integration"
fi

echo
echo "=== 测试完成 ==="
echo
echo "测试说明："
echo "- 基本单元测试：验证所有核心功能的正确性，不需要数据库连接"
echo "- 数据库集成测试：验证与真实数据库的交互，需要设置 TEST_DB_SWITCH=true"
echo "- 当 TEST_DB_SWITCH 未设置或为 false 时，集成测试会被自动跳过"
echo "- 这样可以确保在CI/CD环境中不会因为数据库连接问题而失败"